多线程(三)--- 并发容器

ConcurrentHashMap

这个我在 Map & Set 源码分析 中已经非常详细的讲过了,这里就直接略过了…

CopyOnWriteArrayList

https://juejin.im/post/5aeeae756fb9a07ab11112af

吖!这个更简单哈哈哈,其实也就是读不加锁,写加个锁,写的时候由于是先复制一遍,然后再写回到原数组,所以存在读写的弱一致性,也就是说读到的数据可能不会是最新的。

BlockingQueue

阻塞队列(BlockingQueue)被广泛使用在“生产者-消费者”问题中,其原因是 BlockingQueue 提供了可阻塞的插入和移除的方法。当队列容器已满,生产者线程会被阻塞,直到队列未满;当队列容器为空时,消费者线程会被阻塞,直至队列非空时为止。其实就是封装了我在 Condition 那一块举的例子。相比于平常的 Queue(),就是在入队出队封装了下 Condition,也就是 put() 和 take() 「入队和出队」。

https://juejin.im/post/5aeebd02518825672f19c546

ArrayBlockingQueue & LinkedBlockingQueue

https://juejin.im/post/5aeebdb26fb9a07aa83ea17e

挺简单的…没啥讲的。

Thank you for your accept. mua!
-------------本文结束感谢您的阅读-------------